﻿using System;
using System.ServiceModel.DomainServices.Client;
using System.Windows;

namespace RIABlog.Web
{
	/// <summary>
	/// Расширение контекста
	/// </summary>
	public sealed partial class RIABlogContext
	{
		/// <summary>
		/// Виден ли список блогов
		/// </summary>
		public Visibility BlogListVisibility
		{
			get
			{
				return this.Blogs.Count > 0 ? Visibility.Visible : Visibility.Collapsed;
			}
		}

		/// <summary>
		/// Видна ли надпись "Список блогов пуст"
		/// </summary>
		public Visibility BlogListEmptyVisibility
		{
			get
			{
				return this.Blogs.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
			}
		}

		/// <summary>
		/// Кидается при успешном выполнении команды
		/// </summary>
		public Action<InvokeOperation<string>> OnCommandExecuted;

		partial void OnCreated()
		{
			// подписываемся на изменения набора сущностей, чтобы кидать события об изменении свойств
			this.Blogs.EntityAdded += BlogsEntityAddedRemoved;
			this.Blogs.EntityRemoved += BlogsEntityAddedRemoved;
		}

		private void BlogsEntityAddedRemoved(object sender, EntityCollectionChangedEventArgs<Models.Blog> e)
		{
			this.RaisePropertyChanged("BlogListVisibility");
			this.RaisePropertyChanged("BlogListEmptyVisibility");
		}
	}
}
